import Vue from 'vue'
import Vuex from 'vuex'
// 引入公共的http请求  在vuex里使用
import request from '../api/request.js'
import {
	GetOperatorInfo
} from '../api/interface.js'

Vue.use(Vuex)
import themes from './theme.js'
const store = new Vuex.Store({
	state: {
		// 用户是否登录
		hasLogin: false,
		// 存储用户信息
		UserInfo: {},
		//存储用户权限
		Permissions: [],
		// 存储用户所属公司id
		DeptId: "",
		// 存储当前登录人
		RealName: "",
		//获取城市的确树结构 二级级
		Base_DistrictGetTreeDataTListOptions: [],
		//获取城市的确树结构 三级
		Base_DistrictGetTreeDataOptions: [],
		// 客户下拉列表
		CustomerInfoOptions: [],
		// 票据类型下拉列表数据
		BillTypeOptions: [],
		// 获取费用类型下拉列表数据
		ExpenseTypeOptions: [],
		// 获取发票分类下拉列表数据
		InvoiceClassificationOptions: [],
		// 获取所有公司下拉列表数据
		CompayListOptions: [],
		// 存储  日常报销单和差旅报销单子表列表数据
		// 日常报销单明细
		DailyFormChildrenList: [],
		// 差旅报销单明细
		TravleFormChildrenList: [],
		// 获取所有客户来源下拉列表数据
		CustSourceOptions: [],
		// 交通方式下拉列表数据
		TransportationModeOptions: [],
		// 审批流程管理列表
		ProcessInitiationList: [],
		// 默认蓝色皮肤
		currentTheme: "MTheme",
		themes: themes,
		// 默认的皮肤颜色
		seletedThemes: `
				backgroundColor:#509DF7;
				color:#ffffff;
			`,
		bgColor: uni.getStorageSync('bgColor') || '#509DF7',
		color: uni.getStorageSync('color') || '#ffffff',

	},
	mutations: {
		// 获取审批流程管理里诶博爱
		setProcessInitiationListData(state, data) {
			state.ProcessInitiationList = data
			//储存票据类型下拉列表数据到本地
			uni.setStorage({
				key: 'ProcessInitiationList',
				data: data
			})
		},
		SetTransportationModeOptions(state, data) {
			state.TransportationModeOptions = data
			//储存票据类型下拉列表数据到本地
			uni.setStorage({
				key: 'TransportationModeOptions',
				data: data
			})
		},
		// 设置城市地区树结构  二级
		setBase_DistrictGetTreeDataTList(state, data) {
			state.Base_DistrictGetTreeDataTListOptions = data
			//储存票据类型下拉列表数据到本地
			uni.setStorage({
				key: 'Base_DistrictGetTreeDataTListOptions',
				data: data
			})
		},
		// 设置城市地区树结构  三级
		setBase_DistrictGetTreeData(state, data) {
			state.Base_DistrictGetTreeDataOptions = data
			//储存票据类型下拉列表数据到本地
			uni.setStorage({
				key: 'Base_DistrictGetTreeDataOptions',
				data: data
			})
		},

		// 设置日常报销单明细
		setDailyFormChildrenList(state, data) {
			state.DailyFormChildrenList = data
			//储存票据类型下拉列表数据到本地
			uni.setStorage({
				key: 'DailyFormChildrenList',
				data: data
			})
		},
		// 设置差旅报销单明细
		setTravleFormChildrenList(state, data) {
			state.TravleFormChildrenList = data
			//储存票据类型下拉列表数据到本地
			uni.setStorage({
				key: 'TravleFormChildrenList',
				data: data
			})
		},
		// 获取客户下拉列表
		setCustomerInfoOptions(state, data) {
			state.CustomerInfoOptions = data
			//储存票据类型下拉列表数据到本地
			uni.setStorage({
				key: 'CustomerInfoOptions',
				data: data
			})
		},
		// 获取票据类型 下拉列表数据
		SetBillTypeOptions(state, data) {
			state.BillTypeOptions = data
			//储存票据类型下拉列表数据到本地
			uni.setStorage({
				key: 'BillTypeOptions',
				data: data
			})
		},
		// 获取费用类型下拉列表数据
		SetExpenseTypeOptions(state, data) {
			state.ExpenseTypeOptions = data
			//储存费用类型下拉列表数据到本地
			uni.setStorage({
				key: 'ExpenseTypeOptions',
				data: data
			})
		},
		// 获取发票分类下拉列表数据
		SetInvoiceClassificationOptions(state, data) {
			state.InvoiceClassificationOptions = data
			//储存发票分类下拉列表数据到本地
			uni.setStorage({
				key: 'InvoiceClassificationOptions',
				data: data
			})
		},
		// 获取所有公司下拉列表数据
		SetCompayListOptions(state, data) {
			state.CompayListOptions = data
			//储存所有公司下拉列表数据到本地
			uni.setStorage({
				key: 'CompayListOptions',
				data: data
			})
		},

		// 获取所有客户来源下拉列表数据
		SetCustSourceOptions(state, data) {
			state.CustSourceOptions = data
			//储存所有公司下拉列表数据到本地
			uni.setStorage({
				key: 'CustSourceOptions',
				data: data
			})
		},
		// 登录获取用户信息
		getLoginUserInfo(state, data) {
			//登录状态为已登录
			state.hasLogin = true
			// 赋值用户信息
			state.UserInfo = data
			// 赋值当前登录人
			state.RealName = data.UserInfo.RealName
			// 赋值当前公司id
			state.DeptId = data.UserInfo.DepartmentId
			// 赋值当前用户操作权限
			state.Permissions = data.Permissions
			//储存用户数据到本地
			uni.setStorage({
				key: 'UserInfo',
				data: data
			})
			//储存RealName
			uni.setStorage({
				key: 'RealName',
				data: data.UserInfo.RealName
			})
			//储存DeptId
			uni.setStorage({
				key: 'DeptId',
				data: data.UserInfo.DepartmentId
			})
			//储存用户操作权限
			uni.setStorage({
				key: 'Permissions',
				data: data.Permissions
			})
			//储存UserDepts
			uni.setStorage({
				key: 'UserDepts',
				data: data.UserDepts
			})
			//储存UserTreeDepts
			uni.setStorage({
				key: 'UserTreeDepts',
				data: data.UserTreeDepts
			})
		},
		// 退出登录
		logout(state) {
			state.hasLogin = false
			state.UserInfo = {}
			uni.removeStorageSync('token')
			//删除本地储存
			uni.removeStorage({
				key: 'UserInfo',
			})
			//删除RealName
			uni.removeStorage({
				key: 'RealName',
			})
			//删除DeptId
			uni.removeStorage({
				key: 'DeptId',
			})
			//删除用户操作权限
			uni.removeStorage({
				key: 'Permissions',
			})
			//删除UserDepts
			uni.removeStorage({
				key: 'UserDepts',
			})
			//删除UserTreeDepts
			uni.removeStorage({
				key: 'UserTreeDepts',
			})
			//删除用户名
			uni.removeStorage({
				key: 'userName',
			})
			//删除密码
			uni.removeStorage({
				key: 'password',
			})
			//删除是否勾选记住密码
			uni.removeStorage({
				key: 'rememberPsw',
			})
			// 删除皮肤
			uni.removeStorage({
				key: 'bgColor',
			})
			uni.removeStorage({
				key: 'color',
			})
			uni.removeStorage({
				key: 'currentTheme',
			})

		},

		changeTheme(state, themeName = "defaultTheme") {
			// 将皮肤配置JSON转为以 ; 分割的字符串（style 值）style
			let style = state.themes[themeName]
			let currentTheme = 'backgroundColor:' + style.bgColor + ';color:' + style.textColor

			state.seletedThemes = currentTheme
			state.currentTheme = themeName
			state.bgColor = style.bgColor
			state.color = style.textColor
			console.log('vuex', state.themes, themeName, style, state.seletedThemes, state.currentTheme)
			// // 保存当前主题到本地存储
			uni.setStorageSync('currentTheme', themeName);
			uni.setStorageSync('seletedThemes', currentTheme);
			uni.setStorageSync('bgColor', style.bgColor);
			uni.setStorageSync('color', style.textColor);

		}

	},
	getters: {

		currentdilog: (state, getters) => {
			return state.chatTolist
		},
		hasLogin: (state, getters) => {
			return state.hasLogin
		},
		userinfo: (state, getters) => {
			return state.uerInfo
		},
		getUerid: (state, getters) => {
			return state.uerInfo.uid
		},
		theme(state) {
			return state.themes[state.currentTheme].style
		},
		currentTheme: state => state.currentTheme
	},
})

export default store